import Vue from "vue";
// 引入微信JSSDK
import wx from "weixin-js-sdk";

export default function wxShare(
  realUrl,
  title,
  desc,
  timelineTitle,
  link,
  imgUrl
) {
  let wxJSSDKConfig = {};

  getWXJSSDKConfigFn().then((r) => {
    if (r) {
      wx.config({
        debug: false, // 开启调试模式,调用的所有 api 的返回值会在客户端 alert 出来，若要查看传入的参数，可以在 pc 端打开，参数信息会通过 log 打出，仅在 pc 端时才会打印。
        appId: wxJSSDKConfig.appid, // 必填，公众号的唯一标识
        timestamp: wxJSSDKConfig.time, // 必填，生成签名的时间戳
        nonceStr: wxJSSDKConfig.password, // 必填，生成签名的随机串
        signature: wxJSSDKConfig.signature, // 必填，签名
        jsApiList: ["updateAppMessageShareData", "updateTimelineShareData"], // 必填，需要使用的 JS 接口列表
      });
      wx.ready(function () {
        wx.updateAppMessageShareData({
          title: title, // 分享标题
          desc: desc, // 分享描述
          link: link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号 JS 安全域名一致
          imgUrl: imgUrl, // 分享图标
          success: function () {
            // 设置成功
          },
        });

        wx.updateTimelineShareData({
          title: timelineTitle, // 分享标题
          link: link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号 JS 安全域名一致
          imgUrl: imgUrl, // 分享图标
          success: function () {
            // 用户点击了分享后执行的回调函数
          },
        });
      });

      wx.error(function (res) {
        if (
          res.errMsg == "config:invalid signature" &&
          res.realAuthUrl[0] != "" &&
          res.realAuthUrl[0] != undefined
        ) {
          console.log(res.errMsg);
        }
        // config信息验证失败会执行 error 函数，如签名过期导致验证失败，具体错误信息可以打开 config 的debug模式查看，也可以在返回的 res 参数中查看，对于 SPA 可以在这里更新签名。
      });
    }
  });

  function getWXJSSDKConfigFn() {
    let data = {};
    data = {
      url: realUrl,
    };
    let url = "/mobile/getjssdkconfig";
    return new Promise(function (resolve, reject) {
      Vue.axios
        .post(url, data)
        .then((response) => {
          if (response.code == 0) {
            wxJSSDKConfig = response.signpackage;
            resolve(true);
          } else {
            console.log(response.msg);
            resolve(false);
          }
        })
        .catch(function (error) {
          reject(error);
        });
    });
  }
}
// 为Vue的原型对象添加该方法，则所有vue实例都能继承该方法
Vue.prototype.$wxShare = wxShare;
